/*
 *   Copyright (c) 2010-2022, SIUFUNG
 */
package net.siufung.market.base.permit.controller.model.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import net.siufung.core.utils.CopyUtil;
import net.siufung.market.base.permit.mapper.entity.Menu;

import java.io.Serializable;

/**
 * <p>
 * 系统菜单表 默认数据传参对象
 * </p>
 * @author 陈建峰
 * @since 2022-07-05 22:19:50
 */
@Slf4j
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="MenuDto", description="系统菜单表默认数据传输对象")
public class MenuDto implements Serializable {

    private static final long serialVersionUID = -5920342031877126480L;
    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    private Integer id;

    /**
     * 菜单名称
     */
    @ApiModelProperty(value = "菜单名称")
    private String menuName;

    /**
     * 菜单编码
     */
    @ApiModelProperty(value = "菜单编码")
    private String menuCode;

    /**
     * 菜单状态（false/true）
     */
    @ApiModelProperty(value = "菜单状态（false/true）")
    private Boolean externalState;

    /**
     * 外部链接
     */
    @ApiModelProperty(value = "外部链接")
    private String externalUrl;

    /**
     * 菜单父级id
     */
    @ApiModelProperty(value = "菜单父级id")
    private Integer parentId;

    /**
     * 菜单父级名称
     */
    @ApiModelProperty(value = "菜单父级名称")
    private String parentName;

    /**
     * 菜单路由
     */
    @ApiModelProperty(value = "菜单路由")
    private String router;

    /**
     * 菜单全路径
     */
    @ApiModelProperty(value = "菜单全路径")
    private String fullPath;

    /**
     * 页面缓存
     */
    @ApiModelProperty(value = "页面缓存")
    private Boolean keepAlive;

    /**
     * 菜单图标
     */
    @ApiModelProperty(value = "菜单图标")
    private String icon;

    /**
     * 菜单级别
     */
    @ApiModelProperty(value = "菜单级别")
    private Integer level;

    /**
     * 访问类型 0不可访问 1可访问
     */
    @ApiModelProperty(value = "访问类型 0不可访问 1可访问")
    private Boolean accessState;

    /**
     * 系统应用id
     */
    @ApiModelProperty(value = "系统应用id")
    private Integer appId;

    /**
     * 菜单排序
     */
    @ApiModelProperty(value = "菜单排序")
    private Integer sequence;

    /**
     * 权限标识
     */
    @ApiModelProperty(value = "权限标识")
    private String sign;

    /**
     * 菜单描述
     */
    @ApiModelProperty(value = "菜单描述")
    private String description;

    /**
     * 数据标识
     */
    @ApiModelProperty(value = "数据标识")
    private Boolean deleted;

    /**
     * 转化成数据库实体
     * @return Menu
     */
    public Menu to(){
        Menu menu = new Menu();
        CopyUtil.copyProperties(this, menu);
        return menu;
    }

    /**
     * 实体转化成数据库
     * @param menu 实体
     * @return MenuDto
     */
    public MenuDto from(Menu menu){
        CopyUtil.copyProperties(menu, this);
        return this;
    }
}